home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / utils / dirpurge / dirpurge.c next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  3.6 KB  |  187 lines

  1. #include <exec/types.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. char PathName[200];
  7. int Dir;
  8. void rmslash(char *str);
  9. void sr(char *str);
  10. void WriteToT(char *str);
  11. int TLock(char *str);
  12. void ReMoveDesc(char *Path,int Dir);
  13. FILE *fi;
  14. main(int argc,char *argv[])
  15. {
  16.   register int i;
  17.   if(argc!=3)
  18.   {
  19.     printf("DirPurge version 1.1 written by Joseph Hodge\n");
  20.     printf("Usage: DirPurge <confpath> <DirNum>\n");
  21.     printf("   ie: DirPurge bbs:elite 3\n");
  22.     printf("\n");
  23.     printf("This is an AmiExpress 1.1w+ utility\n");
  24.     printf("OutPut goes to Dir(x), Dir(x).old, Dir(x).removed\n");
  25.     exit(0);
  26.   }
  27.  
  28.   strcpy(PathName,argv[1]);
  29.   Dir=atoi(argv[2]);
  30.   sr(PathName);
  31.   
  32.   rmslash(PathName);
  33.  
  34.   if(!TLock(PathName))
  35.   {
  36.     printf("Error, Can't locate conference %s\n",PathName);
  37.     exit(0);
  38.   }
  39.   ReMoveDesc(PathName,Dir);
  40. }
  41.  
  42. void ReMoveDesc(char *Path,int Dir)
  43. {
  44.    FILE *fi,*fo1,*fo2,*fi2;
  45.    char image[256];
  46.    char D1[200];
  47.    char D2[200];
  48.    char P[200];
  49.    char FName[200];
  50.    char Pimage[200];
  51.    char Paths[200];
  52.    char D[200];
  53.    BOOL Remove=FALSE;
  54.    BOOL Header=TRUE;
  55.    char temp[256];
  56.    strcpy(P,Path);
  57.    
  58.    if(P[strlen(P)-1]!='/' && P[strlen(P)-1]!=':')
  59.    {
  60.      strcat(P,"/");
  61.    }
  62.    sprintf(image,"%sdir%d",P,Dir);
  63.    sprintf(D,"%sdir%d.old",P,Dir);
  64.    if(TLock(D))
  65.      DeleteFile(D);
  66.    
  67.    Rename(image,D);
  68.    sprintf(Paths,"%sPaths",P);
  69.    sprintf(D1,"%sdir%d",P,Dir);
  70.    sprintf(D2,"%sdir%d.removed",P,Dir);
  71.    if(!TLock(Paths))
  72.    {
  73.       printf("Error, can't locate Paths file\n");
  74.       exit(0);
  75.    }
  76.  
  77.    fi=fopen(D,"r");
  78.    if(fi==NULL)
  79.    {
  80.      printf("Error!!!! could not open Dir file\n\n");
  81.      exit(0);
  82.    }
  83.     fi2=fopen(Paths,"r");
  84.       if(fi2==NULL)
  85.       {
  86.         fclose(fi);
  87.         printf("Error, can't open paths file\n");
  88.         exit(0);
  89.       }
  90.     fo1=fopen(D1,"a");
  91.     if(fo1==NULL) 
  92.     {
  93.        printf("Error, can't create dir(x).new\n");
  94.        fclose(fi);
  95.        fclose(fi2);
  96.        exit(0);
  97.     }
  98.     fo2=fopen(D2,"a");
  99.     if(fo2==NULL)
  100.     {
  101.       printf("Error, can't create dir(x).removed\n");
  102.       fclose(fi);
  103.       fclose(fi2);
  104.       fclose(fo1);
  105.       exit(0);
  106.     }
  107.    while(fgets(image,200,fi)!=NULL)
  108.    {
  109.       rewind(fi2);
  110.       sr(image);
  111.       if(image[0]>32)
  112.       {
  113.         if(Header==TRUE)
  114.         {
  115.         if(image[25]=='-' && image[28]=='-' && image[27]!='-')
  116.          {  
  117.            Header=FALSE;
  118.          }
  119.          else
  120.          {
  121.            fprintf(fo1,"%s\n",image); continue;
  122.          }
  123.         }
  124.         Remove=TRUE;
  125.         strcpy(temp,image);
  126.         temp[13]='\0'; sr(temp);
  127.         printf("Searching %-13.13s ",temp);
  128.         while(fgets(Pimage,80,fi2)!=NULL)
  129.         {
  130.           sr(Pimage);
  131.           sprintf(FName,"%s%s",Pimage,temp);
  132.           if(TLock(FName))
  133.           {
  134.             Remove=FALSE; printf("FOUND\n");
  135.             fprintf(fo1,"%s\n",image);
  136.             break;
  137.           }
  138.         }
  139.         if(!Remove) continue;
  140.         printf("*** CANT LOCATE ***\n");
  141.         fprintf(fo2,"%s\n",image);
  142.        }
  143.        else if(image[0]!='\0')
  144.        {
  145.           if(Remove)
  146.             fprintf(fo2,"%s\n",image);
  147.           else fprintf(fo1,"%s\n",image);
  148.        }
  149.     }          
  150.     fclose(fi);
  151.     fclose(fi2);
  152.     fclose(fo1);
  153.     fclose(fo2);
  154.  
  155. }
  156.  
  157. void sr(char *str)
  158. {
  159.   register int i;
  160.   i=strlen(str)-1;
  161.   while(i>-1)
  162.   {
  163.     if(*(str+i)<=32) *(str+i)='\0'; else break;
  164.     i--;
  165.   }
  166. }
  167.  
  168. void rmslash(char *str)
  169. {
  170.   register int i;
  171.   i=strlen(str)-1;
  172.   while(i>-1)
  173.   {
  174.     if(*(str+i)=='/' || *(str+i)<=32) *(str+i)='\0'; else break;
  175.     i--;
  176.   }
  177. }
  178. #define ACCESS_READ -2
  179. int TLock(char *str)
  180. {
  181.   long lock;
  182.   if(lock=Lock(str,ACCESS_READ))
  183.   {
  184.     UnLock(lock); return(1);
  185.   }
  186.   return(0);
  187. }